package woaini.fenger.core.bot.event.message.impl;

import java.io.Serializable;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import woaini.fenger.core.bot.event.Segment;

/**
 * 图像 <a
 * href="https://github.com/botuniverse/onebot-11/blob/master/message/segment.md#%E5%9B%BE%E7%89%87">图片</a>
 *
 * @see Image
 * @author yefeng {@code @Date} 2023-05-16 16:50:39
 */
@Getter
@Setter
public class Image extends Segment implements Serializable {

  private Data data;

  public Image(String file) {
    super("image");
    this.data = new Data(file);
  }

  public String getFilePath() {
    return data.getFile().startsWith("file") ? data.getFile() : null;
  }
  public String getFileUrl() {
    return data.getFile().startsWith("http") ? data.getFile() : null;
  }
  public String getBase64() {
    return data.getFile().startsWith("base64") ? data.getFile() : null;
  }
  @NoArgsConstructor
  @lombok.Data
  public static class Data implements Serializable {
    /** 快取 只在通过网络 URL 发送时有效，表示是否使用已缓存的文件，默认 1 */
    boolean cache = true;

    /** 是否通过代理发送文件 默认 0 */
    boolean proxy = false;

    /**
     * @see Long 超时时间 发送时有用 默认没用
     */
    Long timeout;

    /**
     * @see String 文件 绝对路径，例如 file:///C:\\Users\Richard\Pictures\1.png，格式使用 file URI 网络 URL，例如
     *     http://i1.piimg.com/567571/fdd6e7b6d93f1ef0.jpg Base64 编码，例如
     *     base64://iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAAKElEQVQ4EWPk5+RmIBcwkasRpG9UM4mhNxpgowFGMARGEwnBIEJVAAAdBgBNAZf+QAAAAABJRU5ErkJggg==
     */
    private String file;

    /**
     * @see String 类型 flash标识闪照
     */
    private String type;

    /**
     * @see String URL 图片访问地址 只有接收的时候有用
     */
    private String url;

    public Data(String file, boolean flash) {
      this.file = file;
      if (flash) {
        this.type = "flash";
      }
    }
    public Data(String file) {
      this.file = file;
    }
  }

}
